package com.hanamaki.demo02;

import io.appium.java_client.MultiTouchAction;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;
import java.time.Duration;
import java.util.concurrent.TimeUnit;

public class AppiumMultiTouchAction {
    static AndroidDriver<WebElement> driver;
    @BeforeMethod
    public void setUp() throws MalformedURLException {
//        1. 创建配置对象   new
        DesiredCapabilities cp = new DesiredCapabilities();
//          添加配置信息
        cp.setCapability("deviceName", "127.0.0.1:62001");
        cp.setCapability("platformName", "Android");
        cp.setCapability("appPackage", "com.baidu.BaiduMap");
        cp.setCapability("appActivity", "com.baidu.baidumaps.WelcomeScreen");
        cp.setCapability("noReset", "true");
//        如何启动？
//        驱动 对象
        URL url = new URL("http://localhost:4723/wd/hub");
//        注册 需要打开的 驱动 以及url 以及 对应的软件
        driver = new AndroidDriver<>(url, cp);

        WebDriver.Timeouts timeouts = driver.manage().timeouts();
        timeouts.implicitlyWait(30, TimeUnit.SECONDS);
    }

    @Test
    public void test() throws InterruptedException {
//        想要实现 多点触摸 要实例化 两根手指
//        第一根
        TouchAction thumb = new TouchAction(driver);
//        第二根
        TouchAction finger = new TouchAction(driver);

//        想要 让两根手指同步执行  需要 一个
        MultiTouchAction multiTouchAction = new MultiTouchAction(driver);
//        将两跟手指 添加 进来
        multiTouchAction.add(thumb);
        multiTouchAction.add(finger);

        //        现在 有两根手指头  分别控制 放大 或缩小
//        1、 获得 屏幕的 当前的分辨率（宽  高 ）
        int x = driver.manage().window().getSize().width;
        int y = driver.manage().window().getSize().height;

//        想要 缩小 A--->B   D--->c
//       获得四个点 的 坐标
        PointOption A = PointOption.point(x * 2 / 10, y * 2 / 10);
        Duration duration = Duration.ofMillis(800);
        WaitOptions waitOptions = WaitOptions.waitOptions(duration);
        PointOption B = PointOption.point(x * 4 / 10, y * 4 / 10);

        PointOption C = PointOption.point(x * 6 / 10, y * 6 / 10);
        PointOption D = PointOption.point(x * 8 / 10, y * 8 / 10);

//        两根手指 分别 操作
        thumb.press(A).waitAction(waitOptions).moveTo(B).release();
        finger.press(D).waitAction(waitOptions).moveTo(C).release();

//        执行 多点触摸时间
        multiTouchAction.perform();

    }

    @AfterMethod
    public void release() {
//        driver.quit();
    }

}
